就先練習camera 和 SQLite:
整理
Android SQLite Database Tutorial 2 # Introduction + Creating Database and Tables (Part 2)
Android SQLite Database Tutorial (Select, Insert, Update, Delete)
SQLite在android studio本來就有,不用載任何東西。資料庫也是存在手機端。
SQLite不是一個用戶端/伺服器結構的資料庫引擎,而是被整合在用戶程式中
練習完後就想來找檔案。
android studio 3.0 Device Explorer - run as: could not set capabilities: Operation not permitted
Samsung的手機似乎會有這個問題:run as: could not set capabilities: Operation not permitted。所以看不到檔案,目前不知道解決方法。就先放棄找檔案了(一般手機好像都看不到sqlite,sharedPreferences(實際上是一個.xml檔),要root才行,所以就用android studio模擬器先觀察)
Device File Explorer的位置:
View on-device files with Device File Explorer
繼續練習拍照功能:
Take Picture with Camera - Android Studio - Java
照著這部,可以拍照,可是顯示不了圖片,會有例外:
Unable to open content: content://media/external/images/media/173
java.io.FileNotFoundException: No such file or directory
看來是因為路徑不正確之類的。目前不知怎麼解決。
回到之前那部影片的方法,也是圖片跑不出來:
Capture picture from camera - Android Studio Tutorial
影片類似這個解答:
Getting null uri in onActivityResult after take image capture [duplicate]
試了一下,發現這部影片程式碼還是都正確,跟之前一樣,只要修改
AndroidManifest.xml:
android:name="androidx.core.content.FileProvider"
問題是
setImageBitmap() is not working
可能是因為setImageBitmap的功能不夠,所以顯示不出圖片。換成glide就可以:
Glide.with(MainActivity.this)
.load(new File(path)) // Uri of the picture
.into(imageView);
繼續練習看不懂的東西:
Environment.DIRECTORY_PICTURES (手機的Pictures資料夾)
顯示:Pictures
應該更這個檔案無關(file_paths.xml):
<?xml version="1.0" encoding="utf-8"?>
<paths>
<external-path
name="hi_images"
path="Pictures/" />
</paths>
getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES); //顯示完整路徑
/storage/emulated/0/Pictures
關於手機的路徑要用Device File Explorer查看,不過看不到/storage/emulated/0/Pictures ,因為權限問題。
FileProvider.getUriForFile產生的url,不了解意思:
Uri photoURI = FileProvider.getUriForFile(MainActivity.this,
"com.example.takephoto.fileprovider",
photoFile);
長這樣:
content://com.example.takephoto.fileprovider/hi_images/20191015_151502-1333268471.jpg
com.example.takephoto.fileprovider就是provider的android:authorities,隨便任何字都可以。
hi_images也是file_paths.xml自訂的
Android - Save images in an specific folder
解答2:
先創建資料夾,在創建檔案,檔案再給照相機放byte圖片檔
Environment.getExternalStorageDirectory() + "/資料夾名稱";
可能要來研究如何用java判斷圖片檔:
Test if a file is an image file
Java判断文件是否为图片
好像不管怎樣都無法完全判斷圖片檔。推薦的方法好像是imageIO